﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using PortalMainService.Persistencia;
using PortalMainService.Dominio;

namespace PortalMainService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Usuario" in code, svc and config file together.
    public class Usuarios : IUsuario
    {
        private UsuarioDAO usuarioDAO = null;
        private UsuarioDAO UsuarioDAO {
            get 
            {
                if (this.usuarioDAO == null) {
                    this.usuarioDAO = new UsuarioDAO();
                }
                return this.usuarioDAO;
            }
        }

        public Usuario crearUsuario(string email, string password, string nombre, string apellido, string ocupacion, string carrera)
        {
            Usuario nuevoUsuario = new Usuario()
            {
                Email = email,
                Password = password, 
                Nombre = nombre,
                Apellido = apellido,
                Ocupacion = ocupacion,
                Carrera = carrera
            };
            return this.UsuarioDAO.Crear(nuevoUsuario);
        }

        public Usuario obtenerUsuario(string email)
        {
            return this.UsuarioDAO.Obtener(email);
        }

        public Usuario modificarUsuario(string email, string password, string nombre, string apellido, string ocupacion, string carrera)
        {
            Usuario oUsuario = this.obtenerUsuario(email);
            if (oUsuario!= null){
                oUsuario.Password = password;
                oUsuario.Nombre = nombre;
                oUsuario.Apellido = apellido;
                oUsuario.Ocupacion = ocupacion;
                oUsuario.Carrera = carrera;
                oUsuario = this.UsuarioDAO.Modificar(oUsuario);
            }
            return oUsuario;
        }

        public void eliminarUsuario(string email)
        {
            Usuario oUsuario = UsuarioDAO.Obtener(email);
            this.UsuarioDAO.Eliminar(oUsuario);
        }

        public List<Usuario> listarUsuarios()
        {
            return UsuarioDAO.ListarTodos().ToList();
        }
    }
}
